{"componentChunkName":"component---src-templates-blog-page-index-tsx","path":"/exemplos-de-uso-do-uniswap-v3/","result":{"data":{"mdx":{"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"layout\": \"BlogPage\",\n  \"title\": \"Exemplos de uso do Uniswap V3\",\n  \"description\": \"Nesse artigo iremos aprender a como utilizar o Uniswap V3.\",\n  \"image\": \"capa.jpg\",\n  \"tags\": [\"Intermediário\", \"Avançado\", \"DeFi\"],\n  \"author\": [\"Matheus\"],\n  \"publishedAt\": \"12/07/2022\",\n  \"modifiedAt\": \"20220712\",\n  \"suburl\": \"exemplos-de-uso-do-uniswap-v3/\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"Nesse artigo iremos aprender a como utilizar o Uniswap V3.\"), mdx(\"h3\", {\n    \"id\": \"exemplos-de-troca-com-uniswap-v3\"\n  }, \"Exemplos de troca com Uniswap V3\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\ncontract UniswapV3SwapExamples {\\n    ISwapRouter constant router =\\n        ISwapRouter(0xE592427A0AEce92De3Edee1F18E0157C05861564);\\n\\n    function swapExactInputSingleHop(\\n        address tokenIn,\\n        address tokenOut,\\n        uint24 poolFee,\\n        uint amountIn\\n    ) external returns (uint amountOut) {\\n        IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);\\n        IERC20(tokenIn).approve(address(router), amountIn);\\n\\n        ISwapRouter.ExactInputSingleParams memory params = ISwapRouter\\n            .ExactInputSingleParams({\\n                tokenIn: tokenIn,\\n                tokenOut: tokenOut,\\n                fee: poolFee,\\n                recipient: msg.sender,\\n                deadline: block.timestamp,\\n                amountIn: amountIn,\\n                amountOutMinimum: 0,\\n                sqrtPriceLimitX96: 0\\n            });\\n\\n        amountOut = router.exactInputSingle(params);\\n    }\\n\\n    function swapExactInputMultiHop(\\n        bytes calldata path,\\n        address tokenIn,\\n        uint amountIn\\n    ) external returns (uint amountOut) {\\n        IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn);\\n        IERC20(tokenIn).approve(address(router), amountIn);\\n\\n        ISwapRouter.ExactInputParams memory params = ISwapRouter.ExactInputParams({\\n            path: path,\\n            recipient: msg.sender,\\n            deadline: block.timestamp,\\n            amountIn: amountIn,\\n            amountOutMinimum: 0\\n        });\\n        amountOut = router.exactInput(params);\\n    }\\n}\\n\\ninterface ISwapRouter {\\n    struct ExactInputSingleParams {\\n        address tokenIn;\\n        address tokenOut;\\n        uint24 fee;\\n        address recipient;\\n        uint deadline;\\n        uint amountIn;\\n        uint amountOutMinimum;\\n        uint160 sqrtPriceLimitX96;\\n    }\\n\\n    /// @notice Troca o valor de um token pelo m\\xE1ximo poss\\xEDvel de outro token\\n    /// @param params Os par\\xE2metros necess\\xE1rios para a troca, codificados como ExactInputSingleParams em calldata\\n    /// @return amountOut O valor do token recebido\\n    function exactInputSingle(ExactInputSingleParams calldata params)\\n        external\\n        payable\\n        returns (uint amountOut);\\n\\n    struct ExactInputParams {\\n        bytes path;\\n        address recipient;\\n        uint deadline;\\n        uint amountIn;\\n        uint amountOutMinimum;\\n    }\\n\\n    /// @notice Troca o valor de um token pelo m\\xE1ximo poss\\xEDvel de outro ao longo do caminho especificado\\n    /// @param params Os par\\xE2metros necess\\xE1rios para a troca multi-hop, codificados como ExactInputParams em calldata\\n    /// @return amountOut O valor do token recebido\\n    function exactInput(ExactInputParams calldata params)\\n        external\\n        payable\\n        returns (uint amountOut);\\n}\\n\\ninterface IERC20 {\\n    function totalSupply() external view returns (uint);\\n\\n    function balanceOf(address account) external view returns (uint);\\n\\n    function transfer(address recipient, uint amount) external returns (bool);\\n\\n    function allowance(address owner, address spender) external view returns (uint);\\n\\n    function approve(address spender, uint amount) external returns (bool);\\n\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint amount\\n    ) external returns (bool);\\n\\n    event Transfer(address indexed from, address indexed to, uint value);\\n    event Approval(address indexed owner, address indexed spender, uint value);\\n}\\n\\ninterface IWETH is IERC20 {\\n    function deposit() external payable;\\n\\n    function withdraw(uint amount) external;\\n}\\n\")), mdx(\"br\", null), mdx(\"h3\", {\n    \"id\": \"testes-com-foundry\"\n  }, \"Testes com Foundry\"), mdx(\"p\", null, \"Siga os passos abaixo:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Copie e cole o c\\xF3digo na pasta \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"test\"), \" do seu projeto Foundry\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.13;\\n\\nimport \\\"forge-std/Test.sol\\\";\\nimport \\\"forge-std/console.sol\\\";\\n\\nimport \\\"../src/UniswapV3SwapExamples.sol\\\";\\n\\naddress constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;\\naddress constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;\\naddress constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;\\n\\ncontract UniV3Test is Test {\\n    IWETH private weth = IWETH(WETH);\\n    IERC20 private dai = IERC20(DAI);\\n    IERC20 private usdc = IERC20(USDC);\\n\\n    UniswapV3SwapExamples private uni = new UniswapV3SwapExamples();\\n\\n    function setUp() public {}\\n\\n    function testSingleHop() public {\\n        weth.deposit{value: 1e18}();\\n        weth.approve(address(uni), 1e18);\\n\\n        uint amountOut = uni.swapExactInputSingleHop(WETH, DAI, 3000, 1e18);\\n\\n        console.log(\\\"DAI\\\", amountOut);\\n    }\\n\\n    function testMultiHop() public {\\n        weth.deposit{value: 1e18}();\\n        weth.approve(address(uni), 1e18);\\n\\n        bytes memory path = abi.encodePacked(\\n            WETH,\\n            uint24(3000),\\n            USDC,\\n            uint24(100),\\n            DAI\\n        );\\n\\n        uint amountOut = uni.swapExactInputMultiHop(path, WETH, 1e18);\\n\\n        console.log(\\\"DAI\\\", amountOut);\\n    }\\n}\\n\")), mdx(\"ol\", {\n    \"start\": 2\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Execute os seguintes comandos para executar o teste\")), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-go\"\n  }, \"FORK_URL=https://eth-mainnet.g.alchemy.com/v2/vtqCl_WPHwVu683HSlNFlL36pTaaWIJw\\nforge test -vv --gas-report --fork-url $FORK_URL --match-path test/UniswapV3SwapExamples.test.sol\\n\")), mdx(\"p\", null, \"Links \\xFAteis:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://docs.uniswap.org/protocol/guides/swaps/single-swaps\",\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"Uniswap V3\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://github.com/foundry-rs/foundry\",\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"Foundry\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://github.com/t4sk/defi-notes\",\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"Exemplos de Uniswap V3 com Foundry\"))), mdx(\"br\", null), mdx(\"h3\", {\n    \"id\": \"testar-no-remix\"\n  }, \"Testar no \", mdx(\"a\", {\n    parentName: \"h3\",\n    \"href\": \"https://remix.ethereum.org/\",\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"Remix\")), mdx(\"br\", null), mdx(\"br\", null));\n}\n;\nMDXContent.isMDXComponent = true;","frontmatter":{"title":"Exemplos de uso do Uniswap V3","description":"Nesse artigo iremos aprender a como utilizar o Uniswap V3.","image":{"childImageSharp":{"fluid":{"base64":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAEEAgP/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAGyjqxmg//EABoQAAICAwAAAAAAAAAAAAAAAAISAREEECH/2gAIAQEAAQUCGayDeBG1WG7r/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAHBAAAQQDAQAAAAAAAAAAAAAAAQACETEDEFES/9oACAEBAAY/AiDkJc6YHFLZceITa9C1ev/EABsQAQADAAMBAAAAAAAAAAAAAAEAESEQMUHx/9oACAEBAAE/IbKQo9CJaC8ZcSQ1TSOQB5dQPjx//9oADAMBAAIAAwAAABCgz//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EAB0QAQEAAgIDAQAAAAAAAAAAAAERACFhgTFBcdH/2gAIAQEAAT8QGr4GnNCen85w/gUmuzjEGCko9awyBlTqffOUx04BgQi3nP/Z","aspectRatio":1.5151515151515151,"src":"/static/ae02221f62f999ee1c60845b6e97fdd8/0cb3d/capa.jpg","srcSet":"/static/ae02221f62f999ee1c60845b6e97fdd8/f836f/capa.jpg 200w,\n/static/ae02221f62f999ee1c60845b6e97fdd8/2244e/capa.jpg 400w,\n/static/ae02221f62f999ee1c60845b6e97fdd8/0cb3d/capa.jpg 536w","sizes":"(max-width: 536px) 100vw, 536px"}}},"tags":["Intermediário","Avançado","DeFi"],"author":["Matheus"],"suburl":"exemplos-de-uso-do-uniswap-v3/","publishedAt":"12/07/2022","modifiedAt":"20220712"},"tableOfContents":{"items":[{"url":"#exemplos-de-troca-com-uniswap-v3","title":"Exemplos de troca com Uniswap V3"},{"url":"#testes-com-foundry","title":"Testes com Foundry"},{"url":"#testar-no-remix","title":"Testar no Remix"}]},"timeToRead":1},"allMdx":{"nodes":[{"frontmatter":{"suburl":"sistema-de-swap-estavel-amm/","title":"Como criar um sistema de Swap estável AMM","tags":["Avançado","DeFi"]}},{"frontmatter":{"suburl":"produto-constante-amm/","title":"Como criar um produto constante AMM","tags":["Intermediário","DeFi"]}},{"frontmatter":{"suburl":"soma-constante-amm/","title":"Como criar uma soma constante AMM","tags":["Intermediário","DeFi"]}},{"frontmatter":{"suburl":"sistema-de-cofre/","title":"Como criar um sistema de Cofre","tags":["Intermediário","DeFi"]}},{"frontmatter":{"suburl":"sistema-de-staking/","title":"Como criar um sistema de Staking de Recompensas","tags":["Intermediário","Avançado","DeFi"]}},{"frontmatter":{"suburl":"sistema-de-preco-chainlink-oracle/","title":"Como criar um sistema de preços Oracle","tags":["Intermediário","Avançado","DeFi"]}},{"frontmatter":{"suburl":"exemplos-de-uso-do-uniswap-v3/","title":"Exemplos de uso do Uniswap V3","tags":["Intermediário","Avançado","DeFi"]}},{"frontmatter":{"suburl":"fornecimento-unilateral-com-uniswap-v2/","title":"Fornecimento unilateral ideal com Uniswap V2","tags":["Intermediário","Avançado","DeFi"]}},{"frontmatter":{"suburl":"adicionar-e-remover-liquidez-com-uniswap-v2/","title":"Como adicionar e remover liquidez com Uniswap V2","tags":["Intermediário","Avançado","DeFi"]}},{"frontmatter":{"suburl":"swap-com-uniswap-v2/","title":"Como realizar Swap com Uniswap V2","tags":["Intermediário","DeFi"]}},{"frontmatter":{"suburl":"testes-com-echidna/","title":"Como realizar testes com Echidna","tags":["Intermediário"]}},{"frontmatter":{"suburl":"ignorar-verificacao-do-tamanho-do-contrato/","title":"Como ignorar a verificação do tamanho do contrato","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"repeticao-de-assinatura/","title":"Repetição de assinatura","tags":["Avançado","Hacks"]}},{"frontmatter":{"suburl":"manipular-timestamp-do-bloco/","title":"Manipulando o timestamp do bloco na blockchain","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"ataque-front-running/","title":"Ataque utilizando a técnica front running","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"honeypot/","title":"Criar uma armadilha para hackers com a técnica honeypot","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"ocultar-script-malicioso/","title":"Como um contrato malicioso esconde seu script","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"phishing-com-txorigin/","title":"Phishing com tx.origin","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"negacao-de-servico/","title":"Inutilizar um contrato através da negação de serviço","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"fonte-de-aleatoriedade/","title":"Fonte de Aleatoriedade","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"chamada-de-funcao-delegatecall/","title":"Chamada de função delegatecall","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"acessando-variaveis-privadas/","title":"Acessando variáveis privadas","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"auto-destruicao/","title":"Ataques com Auto-destruição","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"estouro-de-memoria/","title":"Ataques com estouro de memória","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"ataque-de-reentrada/","title":"Ataque de reentrada, aprenda como funciona e como evitar","tags":["Intermediário","Hacks"]}},{"frontmatter":{"suburl":"bloqueio-de-tempo-timelock/","title":"Criar um contrato com bloqueio de tempo","tags":["Avançado","Aplicações"]}},{"frontmatter":{"suburl":"contrato-para-multichamadas/","title":"Criar contrato para Multichamada de funções","tags":["Avançado","Aplicações"]}},{"frontmatter":{"suburl":"financiamento-coletivo-crowd-fund/","title":"Criar um sistema de financiamento coletivo","tags":["Avançado","Aplicações"]}},{"frontmatter":{"suburl":"sistema-de-leilao-ingles-holandes/","title":"Criar um sistema de leilão inglês e holandês","tags":["Avançado","Aplicações"]}},{"frontmatter":{"suburl":"canal-de-pagamento-bidirecional/","title":"Criar um Canal de pagamento bidirecional","tags":["Avançado","Aplicações"]}},{"frontmatter":{"suburl":"canal-de-pagamento-unidirecional/","title":"Criar um Canal de pagamento unidirecional","tags":["Avançado","Aplicações"]}},{"frontmatter":{"suburl":"gravar-dados-no-slot/","title":"Como gravar dados em qualquer slot","tags":["Intermediário","Aplicações"]}},{"frontmatter":{"suburl":"implantar-contrato-com-proxy/","title":"Como implantar qualquer contrato com Proxy","tags":["Avançado","Aplicações"]}},{"frontmatter":{"suburl":"trabalhando-com-proxy/","title":"Trabalhando com Proxy","tags":["Avançado","Aplicações"]}},{"frontmatter":{"suburl":"precomputar-endereco-contrato/","title":"Pré-computar endereço do Contrato com Create2","tags":["Avançado","Aplicações"]}},{"frontmatter":{"suburl":"token-erc721/","title":"Criando nosso primeiro Token ERC721","tags":["Intermediário","Avançado","Aplicações"]}},{"frontmatter":{"suburl":"token-erc20/","title":"Criando nosso primeiro Token ERC20","tags":["Intermediário","Avançado","Aplicações"]}},{"frontmatter":{"suburl":"aplicacao-mapeamento-iteravel/","title":"Mapeamento Iterável","tags":["Intermediário","Aplicações"]}},{"frontmatter":{"suburl":"aplicacao-arvore-merkle/","title":"Árvore de Merkle","tags":["Avançado","Aplicações"]}},{"frontmatter":{"suburl":"aplicacao-multi-assinatura/","title":"Carteira com Multi-Assinaturas","tags":["Intermediário","Avançado","Aplicações"]}},{"frontmatter":{"suburl":"aplicacao-wallet/","title":"Carteira de Tokens","tags":["Iniciante","Aplicações"]}},{"frontmatter":{"suburl":"assinaturas-e-hashing-keccak/","title":"Verificando assinatura hashing com Keccak256","tags":["Intermediário","Avançado"]}},{"frontmatter":{"suburl":"abi/","title":"O que é ABI e para que serve?","tags":["Iniciante"]}},{"frontmatter":{"suburl":"import-e-libraries/","title":"Import e Libraries, para que servem?","tags":["Iniciante","Intermediário"]}},{"frontmatter":{"suburl":"criar-contrato-simples/","title":"Criar um contrato através de outro contrato","tags":["Intermediário"]}},{"frontmatter":{"suburl":"call-fallback-delegatecall/","title":"Call, Fallback, Delegatecall e chamadas de contratos","tags":["Intermediário"]}},{"frontmatter":{"suburl":"transfer-send-call/","title":"Enviar Ether com transfer, send e call","tags":["Iniciante","Intermediário"]}},{"frontmatter":{"suburl":"visibilidade-interface-pagavel/","title":"Visibilidade, Interfaces e Funções Pagáveis","tags":["Intermediário"]}},{"frontmatter":{"suburl":"evento-construtor-heranca/","title":"Evento, Construtor e Herança","tags":["Iniciante","Intermediário"]}},{"frontmatter":{"suburl":"tratamento-de-erros/","title":"Tratamento de erros de condições e exceções","tags":["Iniciante","Intermediário"]}},{"frontmatter":{"suburl":"funcoes/","title":"Funções e Modificadores","tags":["Iniciante","Intermediário"]}},{"frontmatter":{"suburl":"armazenamento/","title":"Armazenamento de Dados","tags":["Intermediário"]}},{"frontmatter":{"suburl":"estruturas/","title":"Estruturas - Struct","tags":["Iniciante","Intermediário"]}},{"frontmatter":{"suburl":"enum/","title":"Enum - Enumeradores","tags":["Iniciante","Intermediário"]}},{"frontmatter":{"suburl":"mapping-arrays/","title":"Mapping e Arrays","tags":["Iniciante"]}},{"frontmatter":{"suburl":"if-else-for-while/","title":"If, Else, For e While","tags":["Iniciante"]}},{"frontmatter":{"suburl":"ether-wei-gas/","title":"Ether, Wei e Taxa de Gas","tags":["Iniciante"]}},{"frontmatter":{"suburl":"variaveis/","title":"Entendendo as Variáveis","tags":["Iniciante"]}},{"frontmatter":{"suburl":"primeiro-aplicativo/","title":"Meu primeiro aplicativo","tags":["Iniciante","Aplicações"]}}]},"topicsYaml":{"topics":[{"desc":"Todos os conteúdos de nível iniciante estão disponíveis aqui","title":"Iniciante","url":"iniciante/"},{"desc":"Todos os conteúdos de nível intermediário estão disponíveis aqui","title":"Intermediário","url":"intermediario/"},{"desc":"Todos os conteúdos de nível avançado estão disponíveis aqui","title":"Avançado","url":"avancado/"},{"desc":"Todos os artigos referentes a exemplos de aplicações do Solidity, estão disponíveis aqui","title":"Aplicações","url":"aplicacoes/"},{"desc":"Todos os artigos referentes a exemplos de aplicação de hacks do Solidity, estão disponíveis aqui","title":"Hacks","url":"hacks/"},{"desc":"Todos os artigos referentes a exemplos de aplicação DeFi do Solidity, estão disponíveis aqui","title":"DeFi","url":"defi/"},{"desc":"Artigos de outras linguagens de programação, exemplos de interação entre a blockchain e aplicativos externos, estão disponíveis aqui","title":"Outros Artigos","url":"artigos/"}]}},"pageContext":{"suburl":"exemplos-de-uso-do-uniswap-v3/","postTopics":["Intermediário","Avançado","DeFi"],"publishedAt":"12/07/2022","prevArticle":{"title":"Fornecimento unilateral ideal com Uniswap V2","layout":"BlogPage","suburl":"fornecimento-unilateral-com-uniswap-v2/","author":["Matheus"],"tags":["Intermediário","Avançado","DeFi"],"publishedAt":"09/07/2022","modifiedAt":"20220709"},"nextArticle":{"title":"Como criar um sistema de preços Oracle","layout":"BlogPage","suburl":"sistema-de-preco-chainlink-oracle/","author":["Matheus"],"tags":["Intermediário","Avançado","DeFi"],"publishedAt":"15/07/2022","modifiedAt":"20220715"}}},"staticQueryHashes":["119291576","2330562257","4065828390"]}